'use strict'

class content {

  constructor () {
    //param默认就是/:id，若要改变路由，则可以设置此属性，比如设置为/:name
    // this.param = '/:name/type'
  }

  __mid () {
    return [
      {
        name:'token-verify',
        path:['post','delete']
      }
    ]
  }
  //获取资源具体内容
  // 对应路由 GET /content/:id
  async get (c) {
    let id = c.param.id;

    let sqltext = 'SELECT id,detail,title,update_time ' + ' FROM content WHERE id=$1';
    let r = await c.service.psql.query(sqltext,[ id ]);
    if(r.rowCount === 0){
        return c.status(404).send('not found');
    }
    c.send(r.rows[0]);
  }

  //创建资源
  // 对应路由 POST /content
  async post (c) {
    try{
      //c.body 是提交的请求体数据
      let data = JSON.parse(c.body);
      let sqltext = 'INSERT INTO content' + '(id,detail,title,add_time,update_time)' + ' VALUES($1,$2,$3,$4,$5)';
      //随机数转成16进制并去掉前两位，字串作为ID
      let id = Math.random().toString(16).substring(2);
      let tm = Date.now()
      let r = await c.service.psql.query(sqltext,[
          id,data.detail,data.title,tm,tm
      ])
      if(r.rowCount == 0){
          return c.status(500).send('failed');
      }
      c.send(id);
  }catch(err){
      console.error(err);
      c.status(400).send('bad data');
  }
  }

  //更新资源
  // 对应路由 PUT /content/:id
  async put (c) {

  }

  //获取列表
  // 对应路由 GET /content
  async list (c) {
    let sqltext = 'SELECT id,title,update_time FROM content';
    let r = await c.service.psql.query(sqltext);
    c.send(r.rows);
  }

  //删除资源
  // 对应路由 DELETE /content/:id
  async delete (c) {
    let r = await c.service.psql.query(`DELETE FROM content WHERE id = $1`,
      [c.param.id]
    )
    c.send({
      count:r.rowCount
    })
  }

}

module.exports = content
